// 지정한 값의 문자만 사용하도록 정의됨
// 사용예
// SALPHA, NUM, PASSWORD, EMAIL
// CheckType(sUserID, SALPHA+NUM)
// CheckType(sPass, PASSWORD)
// ! form input check
var NUM = "0123456789";	
var NUMCHK = "123456789";	
var SALPHA = "abcdefghijklmnopqrstuvwxyz";
var ALPHA = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"+SALPHA;
var EMAIL = "!#$%&*+-./=?@^_`{|}"+NUM+ALPHA;
var PASSWORD = "!@.#,$%^*&_-" + ALPHA + NUM;
var BANCHAR = "&+%*'`\"#";
var URL = "!#$%&*+-./=?@^_|" + NUM + ALPHA;
var EXTSTRING ="▨▧";


function dateToStringReplace(str){
	var temp;
	while(str.indexOf("-") >= 0 ){
		temp = str.replace("-", "");
		str = temp;		
	}
	return str;
}


function FnCheckType(s,spc) {
	var i;
	for(i=0; i<s.length; i++) {
		if (spc.indexOf( s.substring(i, i+1)) < 0) {
			return false;
		}
	}
	return true;
}


//숫자만 입력 가능 : 메세지 보임.
//@param : Object arg : 입력 필드명 
//@return: void 
//var message20 = "<bean:message bundle='product' key='registration.dataNumCheck'/>" 선언필요
function numDataCheck(arg){
	var str = arg.value;
	if(!FnCheckType(str, NUM)){
		alert("숫자만 입력가능 합니다.");
		arg.value="";
		arg.focus;
		return;
	}
	return;
}

//숫자 + 영문대문자 입력 가능 : 메세지 보임. 
//@param : Object arg : 입력 필드명 
//@return: void 
//var message20 = "<bean:message bundle='product' key='registration.dataNumCheck'/>" 선언필요
function numAndALPHACheck(arg){
	var str = arg.value;
	if(!FnCheckType(str, NUM+ALPHA)){
		alert("숫자 / 영문자만 가능합니다.");
		arg.value="";
		arg.focus;
		return;
	}
	return;
}


//조회시 특수문자(') 불가 
//@param : Object arg : 입력 필드명 
//@return: void 
function searchCheckExt(arg){
	var str = arg.value;
	var i = 0;
	for(i = 0; i < str.length; i++){
		if(str.substring(i, i+1) == "'"){
			alert("특수문자(')로  조회할 수 없습니다.", null, null, null);	
			arg.value = str.substring(0, i);
			arg.focus;
			return;
		}
	}	
	return;
}

//Window 닫기 
function winSelfClose(){
	self.close();
}
function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
} 

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}



//테이블 데이타 중복유무 
//@param : String tableName - 테이블 ID 
//@param : String text   	- 읽을 행 첫번째 열
//@return: String str		- "0" 중복 유, "1" 중복 무 
function tableRowDataDuplicationCheck(tableName, text){
	
	var oTable 	= document.all(tableName);
	var oRow		= oTable.rows;
	var oCell;
	var curr_row;
	
	for(curr_row = 0; curr_row < oRow.length; curr_row++){	
		oCell = oRow[curr_row].cells;	
		if(oCell[0].innerHTML == text ){
			return "0";			
		}				
	}
}


//테이블 데이타 행 찾기 
//@param : String tableName - 테이블 ID 
//@param : String text   	- 읽을 행 첫번째 열
//@return: String rowNum	- 테이블 행 
function tableRowNumSearch(tableName, text){
	
	var oTable 	= document.all(tableName);
	var oRow	= oTable.rows;
	var oCell;
	var curr_row;
	
	for(curr_row = 1; curr_row < oRow.length; curr_row++){
	
		oCell = oRow[curr_row].cells;
	
		if(oCell[0].innerHTML == text ){
	
			return curr_row;
		}				
	}
	return "0";
}

//테이블 데이타 행 읽기 
//@param : String tableName - 테이블 ID 
//@param : String text   	- 읽을 행 첫번째 열
//@return: Object oCell		- 읽을 행 열 배열 
function tableRowDataRead(tableName, text){
	
	var oTable 	= document.all(tableName);
	var oRow	= oTable.rows;
	var oCell;
	var curr_row;
	
	for(curr_row = 0; curr_row < oRow.length; curr_row++){
	
		oCell = oRow[curr_row].cells;
	
		if(oCell[0].innerHTML == text ){
	
			curr_row = oRow.length;
		}		
		
	}
	return oCell;
}

//테이블 데이타 행 삭제 - 단일 행 삭제 
//@param : String tableName - 테이블 ID 
//@param : String rowNum   	- 삭제 행 
//@return: void 
function tableRowDataDel(tableName, rowNum){
	
	var oTable 	= document.all(tableName);
	var oRow	= oTable.rows;
	
	oTable.deleteRow(rowNum);		//내용삭제
	
}

//테이블 데이타 행 & 점선행 삭제
//@param : String tableName - 테이블 ID 
//@param : String text   	- 삭제 행 첫번째 열
//@return: int    curr_row  - 삭제 행 인덱스 
function tableRowData_DotDel(tableName, text){
	
	var oTable 	= document.all(tableName);
	var oRow	= oTable.rows;
	var oCell;
	var curr_row;
	
	for(curr_row = 0; curr_row < oRow.length; curr_row= curr_row+2){	
		oCell = oRow[curr_row].cells;
		if(oCell[0].innerHTML == text ){
			oTable.deleteRow(curr_row);				//내용삭제
			oTable.deleteRow(curr_row);				//점선삭제 
			return curr_row/2;		
		}		
	}				
}
//테이블 데이타 행 추가 - 단일 셀 행 등록 
//@param : String   tableName - 테이블 ID 
//@param : String 	str - 추가할 셀 내용 
//@return: void 
function tableRowDataCellAdd(tableName, str){
	
	var oTable = document.all(tableName);
	var oRow   = oTable.insertRow();
	var oCell  = oRow.insertCell();
	oCell.innerHTML = str;		
	
}

//테이블 데이타 행 초기화 - 다중 셀 행 등록 
//@param : String   tableName - 테이블 ID 
//@param : String[] dataCells - 추가할 셀 내용 배열 
//@param : String[] widthCells - 추가할 셀 너비 배열 
//@return: void 
function initTable(tableName, tRowCount, tCellCount){

	var oTable 	= document.all(tableName);
	var oRow;
	var oCell;
	
	var curr_row;
	var curr_cell;
	
	for(curr_row = 0; curr_row < tRowCount; curr_row++){
		oRow = oTable.insertRow();		
		for(curr_cell = 0; curr_cell < tCellCount; curr_cell++){
			oCell = oRow.insertCell();
			oCell.height="22";
			oCell.innerHTML = "&nbsp;";
		}			
		tableRowDotAdd(tableName, tCellCount);
	}		
}



//테이블 데이타 행 기존행에 복사 - 다중 셀 행 등록 
//@param : String   tableName - 테이블 ID 
//@param : String[] dataCells - 추가할 셀 내용 배열 
//@param : String[] widthCells - 추가할 셀 너비 배열 
//@return: void 
function tableRowDataCopy(tableName, dataCells, widthCells, alignCells, currentRowNum){

	var oTable 	= document.all(tableName);
	var oRow	= oTable.rows(currentRowNum);
	var oCell 	= oRow.cells;
	
	var curr_cell;
	
	
	for(curr_cell = 0; curr_cell < dataCells.length; curr_cell++){
		oCell[curr_cell].width = widthCells[curr_cell]; 		
		oCell[curr_cell].align = alignCells[curr_cell];
		oCell[curr_cell].innerHTML = dataCells[curr_cell];
	}		
}


function tableRowDataAdd(tableName, dataCells, widthCells, alignCells){

	var oTable 	= document.all(tableName);
	var oRow		= oTable.insertRow();
	var oCell 		= new Array(dataCells.length);
	
	var curr_cell;
	
	for(curr_cell = 0; curr_cell < dataCells.length; curr_cell++){
		oCell[curr_cell] = oRow.insertCell();
		//alert(widthCells[curr_cell]);
		oCell[curr_cell].height="22";
		oCell[curr_cell].width = widthCells[curr_cell]; 
		oCell[curr_cell].align = alignCells[curr_cell];
		oCell[curr_cell].innerHTML = dataCells[curr_cell];
	}		
}


//테이블 점선 행 추가 
//@param : String   tableName - 테이블 ID 
//@param : String   cellNum - 행 셀수 
//@return: void 
function tableRowDotAdd(tableName, cellNum){

	var oTable =document.all(tableName);
	var oRow = oTable.insertRow();
	var oCell;
	var curr_cell;
	
	for(curr_cell = 0; curr_cell < cellNum; curr_cell++){
		oCell = oRow.insertCell();
		oCell.colspan="'+ cellNum +'";
		oCell.background ="../../../images/dot1.gif";
	}		
}

// searchIFrame 의 높이 조정  
// 번들상품 조회 (main) 화면에서 호출 
//  >>  화면 사이즈 조정이 있을때 , 처음 Loading 시 
function checkBrowserFrame() {	
	var iframeTd = document.all("searchIFrameTd");
	iframeTd.height = document.searchIFrame.document.body.scrollHeight;		
}

//DCMF 2차
function pData(){
    this.name;
    this.shopId;
    this.startDate;	
    this.endDate; 		
    this.imsMenuName;	    
    this.imsMenuId;		
    this.saleClassId;	    
    this.prchContentYn;	
    this.paymentWayId; 	
    this.payCode;		    
    
    this.price;					
    this.settleRatio;	
    this.settleRatioId;
    this.usePeriod;		
    this.usePeriodUnit;	
    this.payUnit;		    
    this.payUnitSize;	    
    this.payUrl;			   
    this.mlbApplyYn;		   
    this.mlbServiceCode;		
     
    this.myDepositoryYn;	   
    this.serviceMethod;	
    this.limitCount;		   
    this.limitPeriod;	    
    this.limitDate;		
    this.description;	    
    this.rateId;		
    this.groupId;	   
    this.closeType;		
    this.dupPurchaseYn;		
    
    this.productType;	    
    this.productCompType; 
    this.productDetailCompType;
    this.contentType;	    
    this.contentId;		
    this.subContentId;	
    this.subContentName;    
    this.subSetId;
    this.productId;
    this.version;				
    
    this.paymentWayName;
    this.rateName;
    this.groupName;
    this.shopName;
    this.saleClassName;
    this.prchContentName;
    this.payCodeName;
    this.usePeriodUnitName;
    this.payUnitName;
    this.mlbApplyName;			
    
    this.myDepositoryName;
    this.serviceMethodName;
    this.closeTypeName;
    this.dupPurchaseName;    
    this.dbCud;  
    this.dbStatus;
    this.viewCud;
    this.viewStatus;    		
    this.serviceType;
    this.sourceShopId;
    
    this.updateTypeCd;
    this.auditYn;
    this.workGroupId;
    this.variantProductId;
    this.sourceShopName;
    this.mcodeIssueResult;
    this.mcodeIssueResultName;
    this.billCd;
    this.billCdUseYn;
    this.billCdUseName;
    
     //승인자 변경 
    this.managerMod;
    //체험형 유무 
    this.experienceYn;
    //MCG 템플릿 그룹 필드 
    this.templateSet;
    
    //승인자 view 를위한 추가 
    this.partnerId;
    this.partnerName;
    this.workGroupName;
    
    //배포를 위한 추가 
    this.createTime;
    this.txId;
    //배포상태 결과 
    this.deployStatus;
    
    //다자간 정산 정보
    this.settleRatioYn;
    this.settleRatioCompText;
    
    //상품매출분류
    this.prodCategoryId;
    //DRM 적용 
    this.drmRight;
    
    this.prodCategoryName;   
    
    //20070529 상품추가메타 start========
    this.prodServiceId;
    this.plmPcode;
    this.plmPname;
    this.plmVerifyYn;
    //20070529 상품추가메타 end==========
    this.copyRightId;
    this.copyRightName;
   
}
function tData(){
	//공통 
	this.listKey;
	this.id;
	this.name;
	this.depth;
	this.imageName;	
	this.clickfunction;		
	this.showflag;
	
	//확장 - 메인콘텐츠
	this.categoryId;
	this.contentType;
	this.serviceType;
	this.workGroupId;
	this.stageCode;
	
	//확장  - 서브셋/서브콘텐츠
	this.parentId;			
		
}

function subContentData(){
	this.subContentId;
	this.subContentName;
	
	//메인콘텐츠 정보 
	this.contentId;
	this.contentType;
	this.serviceType;
	this.workGroupId;	
	this.stageCode;
	this.categoryId;
	
	//서브셋 정보 
	this.subSetId;	
}


//구매유무 필드 
//체험유무 필드 
//카테고리 필드 
//변경요청 필드
function prchContentModCheck(prchField, expField, categoryField, reqField){
	var reqFlage = "N";
	
	if(prchField == "<%=ProductConstant.VALUE_N%>"){
		if(categoryField == "<%=ProductConstant.VALUE_N%>"){
			reqFlage = "Y";
		}else{
			if(reqField == "<%=ProductConstant.PRCH_CONTENT_BP%>"){
				reqFlage= "N";
			}	
		}	
	}else{
		if(categoryField == "<%=ProductConstant.VALUE_N%>"){
			reqFlage= "Y";
		}else{
			if(reqField == "<%=ProductConstant.PRCH_CONTENT_BP%>"){
				reqFlage= "N";
			}	
		}	
	}	
}

//--------------------------misshyunju--------------------------//

//테이블 데이타 행 & 점선행 삭제
//@param : String tableName - 테이블 ID 
//@param : String text   	- 삭제 행 첫번째 열
//@return: int    curr_row  - 삭제 행 인덱스 
function tableRowAllDel(tableName, text){
	
	var oTable 	= document.all(tableName);
	var oRow	= oTable.rows;
	var oCell;
	var curr_row ;

	for(curr_row = 0; curr_row < oRow.length; curr_row++){	
		
		oCell = oRow[curr_row].cells;
		
		if(oCell[0].innerHTML == text ){
			oTable.deleteRow(curr_row);				//내용삭제
			return curr_row;
			
		}		
	}
}

//테이블 데이타 행 초기화 - 다중 셀 행 등록 
//@param : String   tableName - 테이블 ID 
//@param : String[] dataCells - 추가할 셀 내용 배열 
//@param : String[] widthCells - 추가할 셀 너비 배열 
//@return: void 
function initTableBundle(tableName, tRowCount, tCellCount){

	var oTable 	= document.all(tableName);
	var oRow;
	var oCell;
	
	var curr_row;
	var curr_cell;
	
	for(curr_row = 0; curr_row < tRowCount; curr_row++){
		oRow = oTable.insertRow();		
		for(curr_cell = 0; curr_cell < tCellCount; curr_cell++){
			oCell = oRow.insertCell();
			oCell.height="22";
			oCell.innerHTML = "&nbsp;";
		}			
		//tableRowDotAdd(tableName, tCellCount);
	}		
}

//입력시 다른필드 자동입력
//@param : Object arg : 입력 필드명 
//@return: void 
function autoIframeInput(arg1, arg2){
	
	var elementTable	= document.elementIframe.productT;
	var str1			= arg1.value;
	var i				= 0;
	
	numDataCheckBun(arg1);
	
	if (elementTable.rows.length > 2 ) {
		var len	= arg2.length;
		if (len > 1) {	
			for (var i=0; i<len; i++) {
				arg2[i].value =  0;
				arg2[i].disabled = true;
			}
		} else {
				arg2.value =  0;
				arg2.disabled = true;
		}
	}
	return;
}


function numDataCheckBun(arg){
	var str = arg.value;
	if(!FnCheckType(str, NUMCHK)){
		alert(message20);
		arg.value="";
		arg.focus;
		return;
	}	
}

function getStringByteLength(arg1){	
	return strLen = (arg1.length + (escape(arg1)+"%u").match(/%u/g).length-1);	
}

//-------------------------------------------------------------------
// 데이타 실수형 체크 : 대표상품 사용
// param arg		: 데이타
// return value 	: 
//-------------------------------------------------------------------
function isRatioCheckMsg(arg){
	
	var conData = "0";	
	if(arg == null || arg == "" || trim(arg.value) == ""){ arg.value=""; return; }
	
	
	if(isNaN(parseFloat(arg) ) ==false ){ arg.value="";  alert("숫자와 [.]만 가능합니다."); return; }
	
	if( FnCheckType(arg.value, NUM+".") == false ){ arg.value="";  alert("숫자와 [.]만 가능합니다."); return; }	
	
	var temp = arg.value;	
	
	if(temp.indexOf(".") >= 0) {
		var tempArr = temp.split(".");	
		if(tempArr == null || tempArr.length > 2){ arg.value="";  alert("소숫점 이상"); return; }		
        
		var num1 = trim(tempArr[0]);
		if(num1.length > 3 || parseInt(num1) > parseInt("100") ) {  arg.value="";  alert("정산율은 100%를 초과할 수 없습니다. "); return;  }		
	
		if(tempArr.length ==2){
			var num2 = trim(tempArr[1]);
			if(num2.length > 2 )  {  arg.value="";  alert("소숫점 이하 2자리까지 입니다."); return;  }		
			if(parseInt(num1) == parseInt("100") && parseInt(num2) > parseInt("0")){  arg.value="";  alert("정산율은 100%를 초과할 수 없습니다. "); return;  }				
		}	
	}else{
		if(temp.length > 3 || parseInt(temp) > parseInt("100") ) {  arg.value="";  alert("정산율은 100%를 초과할  수 없습니다.! "); return;  }		
	}
	
	return;
	
}